home *** CD-ROM | disk | FTP | other *** search
/ HyperPC 2 / HyperPC 2 - Disc 1.iso / 18_厳選!オンラインソフト130 / セレクション / wavgp13c.lzh / wg / dll.txt < prev    next >
Text File  |  1999-04-16  |  4KB  |  147 lines

  1. ===============================================================================
  2.   外部プログラムについて
  3. ===============================================================================
  4.  
  5. 外部プログラムを自分で作成したい場合は、以下の仕様でDLLを作成してください。
  6. ただし、WaveGraphのバージョンアップによって、DLLの仕様は変更される可能性があります。
  7. dllsrc.lzhにサンプルがあります。
  8.  
  9. ■エクスポートする関数
  10.  
  11. LPCSTR WINAPI _export WGInfo(void)
  12.  
  13. 外部プログラム実行用のダイアログボックスに表示される文字列を指定する関数です。
  14.  
  15. 戻り値  文字列を指すポインタ
  16.  
  17.  
  18.  
  19. int WINAPI _export ExecuteFunc(WGDATA *wgData)
  20.  
  21. 外部プログラムの処理を行う関数です。
  22.  
  23. 戻り値  画面を更新するウインドウの番号(1 : Window1  2 : Window2  3 : 両方)
  24.  
  25.  
  26.  
  27.  
  28. ■メッセージ
  29.  
  30. #define WM_WG_BACK    32701
  31.  
  32. データを変更する前に、元のデータをバックアップするようにWaveGraphに指示します。
  33. WaveGraphのユーザーが、[編集]メニューの[元に戻す]を実行すると、バックアップした
  34. データが復元されます。
  35.  
  36. パラメータ  wgBack = (WGBACK *)lParam
  37. 戻り値      なし
  38.  
  39.  
  40.  
  41. #define WM_WG_SETDATA    32702
  42.  
  43. ExecuteFuncのパラメータ wgData の内容を変更したとき、WaveGraphに変更を知らせます。
  44. ExecuteFuncが終了する前にSendしなくてはなりません。
  45. 変更が無い場合は、使用しなくてもかまいません。
  46.  
  47. パラメータ  wgData = (WGDATA *)lParam
  48. 戻り値      なし
  49.  
  50.  
  51.  
  52.  
  53. ■構造体
  54.  
  55. typedef struct {
  56.   struct {
  57.     LPVOID data;           // データを指すポインタ (Waveファイルのdataチャンクと同じ形式。 
  58.                            // 量子化ビット数に応じて、キャストして使用するとよい。)
  59.     UINT   nData;          // データの数
  60.     UINT   nDataPerSec;    // サンプリングレート
  61.     WORD   nChannels;      // モノラル(1) ステレオ(2)
  62.     WORD   nBits;          // 量子化ビット数 (8 or 16)
  63.     UINT   x1,x2;          // 選択領域 (0 ≦ x1 ≦ x2 ≦ nData-1) 
  64.     double a;              // データの倍率 (演算ウインドウのコンボボックスの数値)
  65.     WORD   currentChannel; // 操作対象のチャンネル (1 or 2)
  66.   } data[2];               // 0: Window1  1:Window2
  67.   short Current;           // 操作対象のウインドウの番号 (1 or 2)
  68.   HWND hwnd;               // 親ウインドウのハンドル
  69. } WGDATA;
  70.  
  71.  
  72. typedef struct {
  73.   short  n;                // バックアップする対象 (1: Window1  2: Window2  3:All)
  74.   bool   fCh;              // true : 全チャンネル保存   false : 現在のチャンネルのみ保存
  75.   UINT   x1,x2;            // 保存する領域
  76. } WGBACK;
  77.  
  78.  
  79.  
  80.  
  81. ■例
  82.  
  83. int WINAPI _export ExecuteFunc(WGDATA *wgData)
  84. {
  85.      .
  86.      .
  87.      .
  88.  
  89.   // ダイアログボックス表示
  90.      .
  91.      .
  92.  
  93.   if (Okボタンクリック) {
  94.       .
  95.       .
  96.       .
  97.       .
  98.  
  99.     // WaveGraphにデータをバックアップするように指示
  100.     WGBACK wgBack;
  101.     wgBack.n    = バックアップする対象 (1: Window1  2: Window2  3:All)
  102.     wgBack.fCh  = true : 全チャンネル保存   false : 現在のチャンネルのみ保存
  103.     wgBack.x1   = 保存する領域の先頭の番号
  104.     wgBack.x2   = 保存する領域の後尾の番号
  105.     SendMessage(wgData->hwnd,WM_WG_BACK,0,(LPARAM)&wgBack);
  106.       .
  107.       .
  108.       .
  109.     // 何らかの処理を行う
  110.       .
  111.       .
  112.       .
  113.     // WaveGraphにデータの変更を知らせる
  114.     for (int i=0;i<=1;i++) {
  115.       wgData->data[i].data        = 新たなデータを指すポインタ
  116.       wgData->data[i].nData       = 新たなデータの数
  117.       wgData->data[i].nDataPerSec = 新たなサンプリングレート
  118.       wgData->data[i].nChannels   = 新たなチャンネル数(モノラル(1) or ステレオ(2))
  119.       wgData->data[i].nBits       = 新たな量子化ビット数
  120.       wgData->data[i].x1          = 新たな選択領域の先頭の番号
  121.       wgData->data[i].x2          = 新たな選択領域の後尾の番号
  122.  
  123.      // WGDATA構造体の上記以外のメンバーの変更は、知らせる必要はありません。
  124.      // Window1とWindow2のフォーマットは、チャンネル数以外は同じでなくてはなりません。
  125.     }
  126.     SendMessage(wgData->hwnd,WM_WG_SETDATA,0,(LPARAM)wgData);
  127.       .
  128.       .
  129.       .
  130.   }
  131.  
  132.   // ExecuteFunc が終了したとき、画面を更新するウインドウを指定
  133.   //
  134.   // r = 1 : Window1更新
  135.   // r = 2 : Window2更新
  136.   // r = 3 : 全て更新
  137.  
  138.   return r;
  139. }
  140.  
  141.  
  142. LPCSTR WINAPI _export WGInfo()
  143. {
  144.   return "処理の名前";
  145. }
  146.  
  147.